package classes.pintaFormulario
{
	import mx.controls.DateField;
	
	import spark.components.DropDownList;
	import spark.components.List;
	import spark.components.TextArea;
	
	public class RespuestaToXML
	{
		private var idPreg:int;
		private var idOpcion:int;
		private var respTxt:String;
		private var ts:Number;
		
		private var dim:int;
		private var arrKis:Array;
		private var hm:IMap;
		
		public function RespuestaToXML(_idDim:int, hash:IMap)
		{
			this.dim = _idDim;
			this.hm = hash;
			this.arrKis = this.hm.keySet;
		}
		
		public function setXMLResp():XML
		{
			/*
			<Root>
			//varias respuestas
			<r>
			<p>//pregunta
			<o>//opcion
			<tx>//txtRespuesta
			<ts>//timeStamp
			</r>
			<r>
			<p>
			<o>
			<tx>
			<ts>
			</r>
			</Root>
			*/
			var root:XML = new XML("<Root></Root>");			
			var preg:XML;
			var res:XML;
			
			var ta:TextArea;
			var df:DateField;
			var dd:DropDownList;
			var listita:List
			
			for(var i:int = 0; i < this.arrKis.length; i++)
			{
				//obtengo num pregunta 
				idPreg = parseInt(arrKis[i].toString());
				
				//obtengo obj Respuesta
				var respHM:Object = hm.getItemValue(idPreg);
				
				if(respHM.idDim != dim)
					continue;
				
				if(respHM.veRes["className"] == "TextArea")
				{
					ta = respHM.veRes as TextArea;
					
					//si no hay texto, paso a la siguiente pregunta
					//if(ta.text.length == 0) continue;
					
					preg = new XML("<p id=\"" + idPreg.toString() + "\" ts=\"" + respHM.ts.toString() + "\"></p>");
					res = new XML("<r opc=\"" + ta.text + "\" tipo=\"txt\"></r>");
					preg.appendChild(res);
					
				}
				else if(respHM.veRes["className"] == "DateField")
				{
					df = respHM.veRes as DateField;
					
					//si no hay fecha escrita, paso a la siguiente pregunta
					//if(df.text.length == 0) continue;
					
					preg = new XML("<p id=\"" + idPreg.toString() + "\" ts=\"" + respHM.ts.toString() + "\"></p>");
					res = new XML("<r opc=\"" + df.text + "\" tipo=\"txt\"></r>");
					preg.appendChild(res);
				}
				else if(respHM.veRes["className"] == "DropDownList")
				{
					dd = respHM.veRes as DropDownList;
					
					//si no selecciono opcion, paso a la siguiente pregunta
					if(dd.selectedItem == null)
					{
						preg = new XML("<p id=\"" + idPreg.toString() + "\" ts=\"" + respHM.ts.toString() + "\"></p>");
						res = new XML("<r tipo=\"cmb\"></r>");
					}
					else
					{
						preg = new XML("<p id=\"" + idPreg.toString() + "\" ts=\"" + respHM.ts.toString() + "\"></p>");
						res = new XML("<r opc=\"" + dd.selectedItem["IdOpcion"].toString() + "\" tipo=\"cmb\"></r>");
					}
					
					preg.appendChild(res);
				}
				else if(respHM.veRes["className"] == "List")
				{
					listita = respHM.veRes as List;
					var strOpc:String = "";
					
					//si no hay elementos seleccionados, paso a la siguiente pregunta
					//if(listita.selectedItems.length == 0) continue;
					
					preg = new XML("<p id=\"" + idPreg.toString() + "\" ts=\"" + respHM.ts.toString() + "\"></p>");
					
					var it:int = 0;
					
					for each(var item:Object in listita.selectedItems)
					{
						it++;
						res = new XML("<r opc=\"" + item["IdOpcion"].toString() + "\" tipo=\"list\"></r>");
						preg.appendChild(res);
					}
					
					if(it == 0)
					{
						res = new XML("<r tipo=\"list\"></r>");
						preg.appendChild(res);
					}
				}
				
				
				root.appendChild(preg);
			}
			
			return root;
		}
		
	}
}